package org.lanqiao.tjut.dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.lanqiao.tjut.bean.StuBean;
import org.lanqiao.tjut.bean.UsersBean;
import org.lanqiao.tjut.db.DBDriverFactory;

public class GradeManagerDao {
	/**
	 * 保存用户信息
	 * 
	 * @param usersB
	 *            用户信息对象
	 * @return 保存结果的记录行数
	 */
	public int saveStuInfo(StuBean stuB) {
		int re_i = 0;
		// 执行的sql语句
		String strSql = "";
		// sql语句的参数
		Object[] params = null;
		if (stuB.getSTUID() == null) {
			// 新增处理
			strSql = "INSERT INTO STUGRADE(STUNAME,STUCHI,STUMAT,STUENG,STUSCI) VALUES(?,?,?,?,?)";
			params = new Object[] { stuB.getSTUNAME(),stuB.getSTUCHI(),stuB.getSTUMAT(),stuB.getSTUENG(),
					stuB.getSTUSCI() };
		} else {
			// 修改处理
			strSql = "UPDATE STUGRADE SET STUNAME=? ,STUCHI=?,STUMAT=?,STUENG=?,STUSCI=? WHERE STUID=?";
			params = new Object[] { stuB.getSTUNAME(),stuB.getSTUCHI(),stuB.getSTUMAT(),stuB.getSTUENG(),
					stuB.getSTUSCI(),stuB.getSTUID() };
		}
		// 保存数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, params);
		return re_i;
	}
	
	/**
	 * 获取所有的用户信息
	 * 
	 * @return 用户信息集
	 */
	public List<StuBean> getAllGradeInfo() {
		// 查询数据库的sql语句
				String strSql = "SELECT * FROM STUGRADE";
				List<StuBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(strSql,
						new BeanListHandler<StuBean>(StuBean.class));
				return lstUsers;
	}
	/**
	 * 通过id主键获取用户信息
	 * 
	 * @param strUid
	 *            id主键
	 * @return 用户信息
	 */
	public StuBean getGradeById(String strUid) {
		// 查询数据
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM STUGRADE WHERE STUID=?";
		StuBean stuB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanHandler<StuBean>(StuBean.class), new Object[] { strUid });
		return stuB;
	}

	/**
	 * 根据条件进行用户信息查询
	 * 
	 * @param usersB
	 *            查询条件
	 * @return 查询结果集
	 */
	public List<StuBean> doQueryByParas(StuBean stuB) {
		// 根据条件进行数据查询，没有输入查询条件，则进行全部查询
		StringBuilder sbSql = new StringBuilder("SELECT * FROM STUGRADE WHERE 1=1 ");
		// 根据查询条件动态拼写查询语句和参数
		List<Object> lstParas = new ArrayList<Object>();
		if (stuB.getSTUNAME() != null && !stuB.getSTUNAME().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND STUNAME LIKE ? ");
			// 添加参数
			lstParas.add("%%" + stuB.getSTUNAME() + "%%");
		}
		//语文成绩筛选
		if (stuB.getSTUCHI()!=null){
			sbSql.append("AND STUCHI>=?");
			lstParas.add(stuB.getSTUCHI());
		}
		if (stuB.getSTUCHI2()!=null){
			sbSql.append("AND STUCHI<=?");
			lstParas.add(stuB.getSTUCHI2());
		}
		//数学成绩筛选
		if (stuB.getSTUMAT()!=null){
			sbSql.append("AND STUMAT>=?");
			lstParas.add(stuB.getSTUMAT());
		}
		if (stuB.getSTUMAT2()!=null){
			sbSql.append("AND STUMAT<=?");
			lstParas.add(stuB.getSTUMAT2());
		}
		//英语成绩筛选
		if (stuB.getSTUENG()!=null){
			sbSql.append("AND STUENG>=?");
			lstParas.add(stuB.getSTUENG());
		}
		if (stuB.getSTUENG2()!=null){
			sbSql.append("AND STUENG<=?");
			lstParas.add(stuB.getSTUENG2());
		}
		//科学成绩筛选
		if (stuB.getSTUSCI()!=null){
			sbSql.append("AND STUSCI>=?");
			lstParas.add(stuB.getSTUSCI());
		}
		if (stuB.getSTUSCI2()!=null){
			sbSql.append("AND STUSCI<=?");
			lstParas.add(stuB.getSTUSCI2());
		}


		// 进行排序
		sbSql.append("  ORDER BY STUID ");

		// 进行查询操作
		List<StuBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(sbSql.toString(),
				new BeanListHandler<StuBean>(StuBean.class), lstParas.toArray());
		return lstUsers;
	}

	/**
	 * 删除指定id的用户信息
	 * 
	 * @param userId
	 *            用户id
	 * @return 删除结果集数目
	 */
	public int deleteGradeById(int stuId) {
		int re_i = 0;
		// 执行的sql语句
		String strSql = "DELETE FROM STUGRADE WHERE STUID=?";
		// 删除数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { stuId });
		return re_i;
	}
}
